Today's general purpose microprocessors are highly parallel processors with different levels of parallelism. In computer science, the process of converting an algorithm from a scalar implementation, which performs an operation on a single operand, to a vector implementation in which a single instruction refers to a vector (e.g., where it performs a single instruction on a set of operands) is called vectorization. Single-instruction, multiple-data (SIMD) instructions operate on multiple data elements in one instruction and make use of processor registers. By processing multiple data elements in parallel, vectorization provides a convenient way to utilize data parallelism in scientific, engineering, or graphical applications that apply a single operation to all elements in a data set, such as a vector or matrix.
Programmers can exploit vectorization to speedup certain parts of their code. If vectorization is enabled, a compiler may use additional registers to perform more than one operation (e.g., memory loads, additions, etc.) in a single instruction. Vectorization may be especially useful in improving loop execution performance.